<?php
/**
 * Speicherung einzelner Werte
 *
 * @author		Joachim Ruf
 * @copyright	Copyright (c) 2003-2013 Loresoft Software (http://www.loresoft.de)
 * @license		http://yapary.loresoft.de/lizenzbedingungen     New BSD License
 *
 * */


Class Yapary_MVC_SimpleMVC_Value
{
    /** @var : Array aller Variable. array("name1"=>$val1, "name2"=>$val2, "name3"=>$val3) */
    private $arrVar = array();


    function __construct () {

    }


	/**
	 * Leitet den Zugriff auf {add()} weiter
	 * return Object|NULL
	 * */
    public function __set ($_name, $_value) {
		$this->add($_name, $_value);
	}


	/**
	 * Leitet den Zugriff auf {get()} weiter
	 * return Object|NULL
	 * */
	public function __get ($_name) {
		return $this->get($_name);
	}


	/**
	 * Erstellt eine Referenz auf die Daten
	 * @param string $_name : Name, ueber welchen die Daten angesprochen werden sollen
	 * @param mixed &$_value	: Daten, auf welche referenziert werden soll
	 * 						 class, object, var, ...
	 * @return bool
	 * */
    public function set ($_name, $_value) {
	    return $this->arrVar[$_name] = $_value;
	}


	/**
	 * Greift auf den Datensatz zu
	 * @param string $_name : Name des Datensatzes
	 * */
	public function get ($_name) {
		if ($this->exists($_name)) {
			return $this->arrVar[$_name];
		}

		return NULL;
	}


	/**
	 * Liefert die Namen aller registrierten Objekte
	 * @return Array[String]
	 * */
	public function getList () {
	    $arrResult = array();
	    if (count($this->arrVar) >= 1) {
	        while(list($key) = each($this->arrVar)) {
    			$arrResult[] = $key;
	        }
	        reset($this->arrVar);
	    }

		return $arrResult;
	}


	/**
	 * Entfertn hinzugefuegte Daten
	 * @param string $_name : Name des Datensatzes
	 * @return bool
	 * */
	public function delete ($_name) {
		if ($this->exists($_name)) {
			unset($this->arrVar[$_name]);
			return true;
		}

		return false;
	}

	/**
	 * Prueft ob ein bestimmter Datensatz existiert
	 * @param string $_name : Name des Datensatzes
	 * @return bool
	 * */
	public function exists ($_name) {
		if (isset($this->arrVar[$_name])) {
			return true;
		}

		return false;
	}

	/**
	 * Ermittelt den Datentyp des Datensatzes
	 * @param string $_name : Name des Datensatzes
	 * @return string|NULL
	 * */
	public function getType ($_name) {
		if ($this->exists($_name)) {
			return gettype($this->arrVar[$_name]);
		}

		return NULL;
	}

}

?>